Imports System.data
Imports System.Collections.Generic
Imports System.Configuration.Provider

Public MustInherit Class LookupValueProvider : Inherits ProviderBase
    Private Shared _instance As LookupValueProvider
    ' Returns an instance of the provider type specified in the config file
    Public Shared ReadOnly Property Instance() As LookupValueProvider
        Get
            If IsNothing(_instance) Then

            End If
            Return _instance
        End Get
    End Property

    ' ==========
    ' Constructor
    ' ==========
    Public Sub New()
    End Sub

    'Lookup Category Methods
    Public MustOverride Function createLookupCategory(ByVal ShortDesc As String, ByVal LongDesc As String, ByVal CurrentUser As String) As String
    Public MustOverride Function getLookupCategories() As Generic.List(Of LookupCategoryDetails)
    Public MustOverride Function getLookupCategories(ByVal SortExpression As String, ByVal SortOrder As KDESolutions.Providers.DataProvider.SortOrder) As Generic.List(Of LookupCategoryDetails)
    Public MustOverride Function searchLookupCategories(ByVal SearchCollection As Generic.List(Of KDESolutions.Providers.DataProvider.SearchCriteria)) As Generic.List(Of LookupCategoryDetails)
    Public MustOverride Sub updateLookupCategory(ByVal CategoryId As String, ByVal ShortDesc As String, ByVal LongDesc As String, ByVal SortOrder As Integer, ByVal CurrentUser As String)
    Public MustOverride Sub deleteLookupCategory(ByVal CategoryId As String, ByVal CurrentUser As String)
    Public MustOverride Sub ReOrderLookupCategory(ByVal CategoryId As String, ByVal SortOrder As Integer, ByVal ShortDesc As String)
    Public MustOverride Function GetLookupCategoriesForReOrder() As Generic.List(Of KDESolutions.Providers.LookupValues.LookupBindingCategories)

    'Lookup Value methods
    Public MustOverride Function createLookupValue(ByVal CategoryId As String, ByVal ValueCode As String, ByVal ShortDesc As String, ByVal LongDesc As String, ByVal CurrentUser As String, Optional ByVal SortOrder As Integer = 0, Optional ByVal ParentId As String = "") As String
    Public MustOverride Function getLookupValues(ByVal CategoryId As String) As Generic.List(Of LookupValueDetails)
    Public MustOverride Function getLookupValues(ByVal CategoryId As String, ByVal SortExpression As String, ByVal SortOrder As KDESolutions.Providers.DataProvider.SortOrder) As Generic.List(Of LookupValueDetails)
    Public MustOverride Function getLookupSubValues(ByVal ValueParentId As String) As Generic.List(Of LookupValueDetails)
    Public MustOverride Function searchLookupValues(ByVal SearchCollection As Generic.List(Of KDESolutions.Providers.DataProvider.SearchCriteria)) As Generic.List(Of LookupValueDetails)
    Public MustOverride Sub updateLookupValue(ByVal ValueId As String, ByVal CategoryId As String, ByVal ValueCode As String, ByVal ShortDesc As String, ByVal LongDesc As String, ByVal CurrentUser As String, Optional ByVal ParentId As String = "", Optional ByVal SortOrder As Integer = 0)
    Public MustOverride Sub deleteLookupValue(ByVal ValueId As String, ByVal CurrentUser As String)
    Public MustOverride Sub ReOrderLookupValue(ByVal ValueId As String, ByVal SortOrder As Integer, ByVal ShortDesc As String)
    Public MustOverride Function GetLookupValuesForReOrder() As Generic.List(Of KDESolutions.Providers.LookupValues.LookupBindingValues)
End Class
